home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 60 / IOPROG_60.ISO / soft / c++ / gsl-1.1.1-setup.exe / {app} / src / specfunc / test_dilog.c < prev    next >
Encoding:
C/C++ Source or Header  |  2001-11-01  |  5.1 KB  |  128 lines

  1. /* specfunc/test_dilog.c
  2.  * 
  3.  * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
  4.  * 
  5.  * This program is free software; you can redistribute it and/or modify
  6.  * it under the terms of the GNU General Public License as published by
  7.  * the Free Software Foundation; either version 2 of the License, or (at
  8.  * your option) any later version.
  9.  * 
  10.  * This program is distributed in the hope that it will be useful, but
  11.  * WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  13.  * General Public License for more details.
  14.  * 
  15.  * You should have received a copy of the GNU General Public License
  16.  * along with this program; if not, write to the Free Software
  17.  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  18.  */
  19.  
  20. /* Author:  G. Jungman */
  21.  
  22. #include <config.h>
  23. #include <gsl/gsl_test.h>
  24. #include <gsl/gsl_sf.h>
  25. #include "test_sf.h"
  26.  
  27.  
  28. int test_dilog(void)
  29. {
  30.   gsl_sf_result r;
  31.   gsl_sf_result r1, r2;
  32.   int s = 0;
  33.  
  34.   /* real dilog */
  35.  
  36.   TEST_SF(s, gsl_sf_dilog_e, (-3.0, &r),   -1.9393754207667089531,     TEST_TOL0, GSL_SUCCESS);
  37.   TEST_SF(s, gsl_sf_dilog_e, (-0.5, &r),   -0.4484142069236462024,     TEST_TOL0, GSL_SUCCESS);
  38.   TEST_SF(s, gsl_sf_dilog_e, (-0.001, &r), -0.0009997501110486510834,  TEST_TOL0, GSL_SUCCESS);
  39.   TEST_SF(s, gsl_sf_dilog_e, (0.1, &r),     0.1026177910993911,        TEST_TOL0, GSL_SUCCESS);
  40.   TEST_SF(s, gsl_sf_dilog_e, (0.7, &r),     0.8893776242860387386,     TEST_TOL0, GSL_SUCCESS);
  41.   TEST_SF(s, gsl_sf_dilog_e, (1.0, &r),     1.6449340668482260,        TEST_TOL0, GSL_SUCCESS);
  42.   TEST_SF(s, gsl_sf_dilog_e, (1.5, &r),     2.3743952702724802007,     TEST_TOL0, GSL_SUCCESS);
  43.   TEST_SF(s, gsl_sf_dilog_e, (2.0, &r),     2.4674011002723397,        TEST_TOL0, GSL_SUCCESS);
  44.   TEST_SF(s, gsl_sf_dilog_e, ( 5.0, &r),    1.7837191612666306277,     TEST_TOL0, GSL_SUCCESS);
  45.   TEST_SF(s, gsl_sf_dilog_e, ( 11.0, &r),   0.3218540439999117111,     TEST_TOL1, GSL_SUCCESS);
  46.   TEST_SF(s, gsl_sf_dilog_e, (12.59, &r),   0.0010060918167266208634,  TEST_TOL3, GSL_SUCCESS);
  47.   TEST_SF(s, gsl_sf_dilog_e, (12.595, &r),  0.00003314826006436236810, TEST_TOL5, GSL_SUCCESS);
  48.   TEST_SF(s, gsl_sf_dilog_e, (13.0, &r),   -0.07806971248458575855,    TEST_TOL2, GSL_SUCCESS);
  49.   TEST_SF(s, gsl_sf_dilog_e, (20.0, &r),   -1.2479770861745251168,     TEST_TOL0, GSL_SUCCESS);
  50.   TEST_SF(s, gsl_sf_dilog_e, (150.0, &r),  -9.270042702348657270,      TEST_TOL0, GSL_SUCCESS);
  51.   TEST_SF(s, gsl_sf_dilog_e, (1100.0, &r), -21.232504073931749553,     TEST_TOL0, GSL_SUCCESS);
  52.  
  53.  
  54.   /* complex dilog */
  55.   /* FIXME: probably need more tests here... 
  56.    * also need to work on accuracy for r->1; need to
  57.    * adjust the switch-over point I suppose.
  58.    */
  59.  
  60.   TEST_SF_2(s, gsl_sf_complex_dilog_e, (1.00001, M_PI/2.0, &r1, &r2),
  61.             -0.20562022409960237363, TEST_TOL1,
  62.              0.91597344814458309320, TEST_TOL1,
  63.          GSL_SUCCESS);
  64.  
  65.   TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.99999, M_PI/2.0, &r1, &r2),
  66.             -0.20561329262779687646, TEST_TOL0,
  67.              0.91595774018131512060, TEST_TOL0,
  68.          GSL_SUCCESS);
  69.  
  70.   TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.991, M_PI/2.0, &r1, &r2),
  71.             -0.20250384721077806127, TEST_TOL0,
  72.              0.90888544355846447810, TEST_TOL0,
  73.          GSL_SUCCESS);
  74.  
  75.   TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.98, M_PI/2.0, &r1, &r2),
  76.             -0.19871638377785918403, TEST_TOL2,
  77.              0.90020045882981847610, TEST_TOL2,
  78.          GSL_SUCCESS);
  79.  
  80.   TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.95, M_PI/2.0, &r1, &r2),
  81.             -0.18848636456893572091, TEST_TOL1,
  82.              0.87633754133420277830, TEST_TOL1,
  83.          GSL_SUCCESS);
  84.  
  85.   TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.8, M_PI/2.0, &r1, &r2),
  86.             -0.13980800855429037810, TEST_TOL0,
  87.              0.75310609092419884460, TEST_TOL0,
  88.          GSL_SUCCESS);
  89.  
  90.  
  91.   TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.5, M_PI/2.0, &r1, &r2),
  92.             -0.05897507442156586346, TEST_TOL0,
  93.              0.48722235829452235710, TEST_TOL0,
  94.          GSL_SUCCESS);
  95.  
  96.   TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.01, M_PI/2.0, &r1, &r2),
  97.             -0.000024999375027776215378, TEST_TOL3,
  98.              0.009999888892888684820, TEST_TOL3,
  99.          GSL_SUCCESS);
  100.  
  101.   TEST_SF_2(s, gsl_sf_complex_dilog_e, (10.0, M_PI/2.0, &r1, &r2),
  102.             -3.0596887943287347304, TEST_TOL0,
  103.              3.7167814930680685900, TEST_TOL0,
  104.          GSL_SUCCESS);
  105.  
  106.   TEST_SF_2(s, gsl_sf_complex_dilog_e, (100.0, M_PI/2.0, &r1, &r2),
  107.             -11.015004738293824854, TEST_TOL0,
  108.              7.2437843013083534970, TEST_TOL0,
  109.          GSL_SUCCESS);
  110.  
  111.   TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.99, M_PI/8.0, &r1, &r2),
  112.             1.0571539648820244720, TEST_TOL0,
  113.             0.7469145254610851318, TEST_TOL0,
  114.         GSL_SUCCESS);
  115.  
  116.   TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.99, M_PI/64.0, &r1, &r2),
  117.             1.5381800285902999666, TEST_TOL0,
  118.             0.1825271634987756651, TEST_TOL0,
  119.         GSL_SUCCESS);
  120.  
  121.   TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.9, 3.0*M_PI/4.0, &r1, &r2),
  122.             -0.6062840301356530985, TEST_TOL1,
  123.              0.4836632833122775721, TEST_TOL1,
  124.         GSL_SUCCESS);
  125.  
  126.   return s;
  127. }
  128.